package com.ronin.common.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import com.ronin.common.model.Kullanici;
import com.ronin.common.dao.IKullaniciDAO;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service("kullaniciService")
@Transactional(readOnly = true)
public class KullaniciService implements IKullaniciService {


    @Autowired
    IKullaniciDAO kullaniciDAO;


    @Transactional(readOnly = false)
    public void addKullanici(Kullanici user) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(user.getPassword().getBytes());
            byte[] digest = md.digest();
            StringBuilder sb = new StringBuilder();
            for (byte b : digest) {
                    sb.append(Integer.toHexString((int) (b & 0xff)));
            }
            user.setPassword(sb.toString());
            getKullaniciDAO().addKullanici(user);
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(KullaniciService.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Transactional(readOnly = false)
    public void deleteKullanici(Kullanici user) {
        getKullaniciDAO().deleteKullanici(user);
    }

    @Transactional(readOnly = false)
    public void updateKullanici(Kullanici user) {
        getKullaniciDAO().updateKullanici(user);
    }

    public Kullanici getKullaniciById(int id) {
        return getKullaniciDAO().getKullaniciById(id);
    }
    
    public Kullanici getKullaniciByUsername(String username){
        return getKullaniciDAO().getKullaniciByUsername(username);
    }

    public List<Kullanici> getKullaniciList() {
        return getKullaniciDAO().getKullaniciList();
    }

    public IKullaniciDAO getKullaniciDAO() {
        return kullaniciDAO;
    }

    public void setKullaniciDAO(IKullaniciDAO kullaniciDAO) {
        this.kullaniciDAO = kullaniciDAO;
    }

}
